package me.algo;

import java.util.HashMap;
import java.util.Objects;

/**
 * @author guozheng
 * @date 2024/3/31
 */
public class M4 {
    public static void main(String[] args) {

        var s = "MCMXCIV";
        System.out.println(romanToInt(s));
    }
    static HashMap<Character,Integer> map = new HashMap<>();
    static  HashMap<String, Integer> map2 = new HashMap<>();
    static {
        map.put('I', 1);
        map.put('V', 5);
        map.put('X', 10);
        map.put('L', 50);
        map.put('C', 100);
        map.put('D', 500);
        map.put('M', 1000);


        map2.put("IV", 4);
        map2.put("IX", 9);
        map2.put("XL", 40);
        map2.put("XC", 90);
        map2.put("CD", 400);
        map2.put("CM", 900);
    }

    public static int romanToInt(String s) {
        int num = 0;
        for (int i = s.length() - 1; i >= 0; i--) {
            char x1 = s.charAt(i);
            if (i > 0) {
                char x0 = s.charAt(i-1);
                String s2 = Objects.toString(x0) + Objects.toString(x1);
                if (map2.containsKey(s2)) {
                    Integer i2 = map2.get(s2);
                    num += i2;
                    i--;
                    continue;
                }
            }
            Integer i1 = map.get(x1);
            num += i1;

        }
        return num;
    }

}
